package com.dlwx.firefighting.utils.glide;

import android.app.Activity;
import android.content.Context;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.dlwx.firefighting.R;
import com.dlwx.firefighting.utils.LogUtils;
import com.dlwx.firefighting.widget.RoundCornerImageView;


public class GlideImageLoader {
    private Context mContext;

    public GlideImageLoader(Context context) {
        this.mContext = context;
    }

    /**
     * 加载图片方法
     *
     * @param lodingImagerView
     * @param reRESULTsId      drawable中的图片id
     */
    public void display(ImageView lodingImagerView, int reRESULTsId) {//外部接口函数
        Glide.with(mContext)
                .load(reRESULTsId)
                .placeholder(R.color.img_default_color)
                .error(R.mipmap.ic_launcher)
                .animate(android.R.anim.fade_in)  // 自己设置渐现动画可以解决加载图片变形问题
                .diskCacheStrategy(DiskCacheStrategy.RESULT)  //只保留转换后资源
                .skipMemoryCache(true)    //跳过内存缓存
                .into(lodingImagerView);
    }

    /**
     * 加载图片方法
     *
     * @param lodingImagerView
     * @param picUrl
     */
    public void display(ImageView lodingImagerView, String picUrl) {//外部接口函数
        Glide.with(mContext)
                .load(picUrl)
                .animate(android.R.anim.fade_in)  // 自己设置渐现动画可以解决加载图片变形问题
                .placeholder(R.color.img_default_color)
                .error(R.mipmap.ic_launcher)
                .centerCrop()
                .diskCacheStrategy(DiskCacheStrategy.RESULT)
                .skipMemoryCache(true)    //跳过内存缓存
                .into(lodingImagerView);
    }

    public void display(RoundCornerImageView lodingImagerView, String picUrl) {//外部接口函数
        Glide.with(mContext)
                .load(picUrl)
                .animate(android.R.anim.fade_in)  // 自己设置渐现动画可以解决加载图片变形问题
                .placeholder(R.mipmap.ic_launcher)
                .error(R.mipmap.ic_launcher)
                .diskCacheStrategy(DiskCacheStrategy.RESULT)
                .skipMemoryCache(true)    //跳过内存缓存
                .into(lodingImagerView);
    }

    /**
     * 加载好友头像图片方法
     *
     * @param lodingImagerView
     * @param picUrl
     */
    public void displayHeadImg(ImageView lodingImagerView, String picUrl) {//外部接口函数
        Glide.with(mContext)
                .load(picUrl)
                .animate(android.R.anim.fade_in)  // 自己设置渐现动画可以解决加载图片变形问题
                .diskCacheStrategy(DiskCacheStrategy.RESULT)
                .skipMemoryCache(true)
                .placeholder(R.mipmap.ic_launcher)
                .error(R.mipmap.ic_launcher)
                .into(lodingImagerView);
    }

    /**
     * 加载图片方法
     *
     * @param activity
     * @param lodingImagerView
     * @param picUrl
     */
    public void display(Activity activity, ImageView lodingImagerView, String picUrl) {//外部接口函数
        Glide.with(activity)
                .load(picUrl)
                .animate(android.R.anim.fade_in)  // 自己设置渐现动画可以解决加载图片变形问题
                .placeholder(R.color.img_default_color)
                .error(R.mipmap.ic_launcher)
                .diskCacheStrategy(DiskCacheStrategy.RESULT)
                .skipMemoryCache(true)
                .into(lodingImagerView);
    }

    /**
     * 加载图片方法，加载图片为 defaultImg
     *
     * @param lodingImagerView
     * @param picUrl
     * @param defaultImg
     */
    public void display(ImageView lodingImagerView, String picUrl, int defaultImg) {//外部接口函数
        if (defaultImg != 0) {
            Glide.with(mContext)
                    .load(picUrl)
                    .animate(android.R.anim.fade_in)  // 自己设置渐现动画可以解决加载图片变形问题
                    .diskCacheStrategy(DiskCacheStrategy.RESULT)
                    .skipMemoryCache(true)
                    .placeholder(defaultImg)
                    .error(defaultImg)
                    .into(lodingImagerView);
        } else {
            Glide.with(mContext)
                    .load(picUrl)
                    .animate(android.R.anim.fade_in)  // 自己设置渐现动画可以解决加载图片变形问题
                    .diskCacheStrategy(DiskCacheStrategy.RESULT)
                    .placeholder(R.color.img_default_color)
                    .skipMemoryCache(true)
                    .error(defaultImg)
                    .into(lodingImagerView);
        }
    }

    /**
     * 加载图片方法，加载图片为 defaultImg
     *
     * @param activity
     * @param lodingImagerView
     * @param picUrl
     * @param defaultImg
     */
    public void display(Activity activity, ImageView lodingImagerView, String picUrl, int defaultImg) {//外部接口函数
        if (defaultImg != 0) {
            Glide.with(activity)
                    .load(picUrl)
                    .animate(android.R.anim.fade_in)  // 自己设置渐现动画可以解决加载图片变形问题
                    .placeholder(defaultImg)
                    .error(R.mipmap.ic_launcher)
                    .diskCacheStrategy(DiskCacheStrategy.RESULT)
                    .skipMemoryCache(true)
                    .into(lodingImagerView);
        } else {
            Glide.with(activity)
                    .load(picUrl)
                    .animate(android.R.anim.fade_in)  // 自己设置渐现动画可以解决加载图片变形问题
                    .placeholder(R.color.img_default_color)
                    .error(R.mipmap.ic_launcher)
                    .diskCacheStrategy(DiskCacheStrategy.RESULT)
                    .skipMemoryCache(true)
                    .into(lodingImagerView);
        }
    }


    public void clearImageCache() {
        new Thread(runnable).start();
        Glide.get(mContext).clearMemory(); // 必须在主线程中执行
    }

    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            try {
                Glide.get(mContext).clearDiskCache(); // 必须在子线程中执行
            } catch (Exception ex) {
                LogUtils.e(ex.toString());
            }
        }
    };

}
